﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;

namespace FourPartHarmony3 {
    /// <summary>
    /// HorizontalVirtualCanvasに投入するUIElementはこのインターフェースを実装する必要がある。
    /// </summary>
    public interface IVirtualChild {
        /// <summary>
        /// 描画範囲矩形。
        /// </summary>
        Rect Bounds { get; }

        /// <summary>
        /// 描画物。作成されていない時はnullが戻る。
        /// </summary>
        UIElement Visual { get; }

        /// <summary>
        /// Boundaryのヒットを持ちフォーカスすると表示されるカーソルオブジェクト。
        /// </summary>
        bool Focusable { get; set; }

        /// <summary>
        /// 描画物を作成する。
        /// </summary>
        /// <param name="parent">呼び出し元であり、表示物を置くCanvas。</param>
        /// <returns>描画物。</returns>
        UIElement CreateVisual(HorizontalVirtualCanvas parent);

        /// <summary>
        /// 描画物を破棄する。
        /// </summary>
        void DisposeVisual();
    }
}
